
// 在一个数组 nums 中除一个数字只出现一次之外，其他数字都出现了三次。
// 请找出那个只出现一次的数字。

function singleNumber(nums: number[]): number {
    const hashMap = new Map<number, number>();// 声明哈希表
    // 遍历原数组为哈希表计数
    for (let num of nums) {
        if (hashMap.has(num)) {
            hashMap.set(num, (hashMap.get(num) as number) + 1);
        } else {
            hashMap.set(num, 1);
        }
    }
    // 哈希表返回结果
    for (let [key, value] of hashMap.entries()) {
        if (value === 1) return key
    }
    return 0;
};

// 使用常规思路，哈希表统计方法求解。
// 进阶解法：有限状态自动机